home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / alle / thyshell / thyshell.anl next >
Encoding:
Text File  |  1994-09-22  |  29.3 KB  |  590 lines

  1.                     THYSHELL.PRG V. 1.0a
  2.           Eine vielseitige Shell für den Atari ST
  3.  
  4. In  GFA-Basic (V.  2.02) geschrieben und mit dem  GFA-Basic-
  5. Compiler (V. 2.02) kompiliert von
  6.  
  7.                         Rainer Thiel
  8.                     Königsteiner Str. 3
  9.                      D-6200 Wiesbaden,
  10.  
  11. bei  dem auch alle Rechte verbleiben.  Dieses  Programm  ist 
  12. jedoch PUBLIC DOMAIN.  Es darf daher frei  benutzt,  kopiert 
  13. und weitergegeben,  nicht aber verkauft,  gegen eine  Gebühr 
  14. verliehen  oder überlassen oder sonst in  irgendeiner  Weise 
  15. kommerziell genutzt werden. 
  16.  
  17.  
  18. 1. Einführung
  19.  
  20.    THYSHELL.PRG ist beileibe nicht das erste Programm seiner 
  21. Art.  Es  gibt bereits eine ganze Anzahl von Shells für  den 
  22. Atari-ST.  Die  meisten davon sind auf ganz  bestimmte  Pro-
  23. grammpakete  spezialisiert,   deren  bequeme  Benutzung  sie 
  24. ermöglichen.  Es  gibt aber auch schon einige  solcher  Pro-
  25. gramme, die sich an die speziellen Bedürfnisse des Anwenders 
  26. anpassen  lassen.  Zu  dieser Gruppe gehört  auch  THYSHELL; 
  27. THYSHELL  erlaubt  eine solche Anpassung in  ganz  besonders 
  28. hohem Maße.
  29.  
  30.    Gleich zu Beginn möchte ich ein mögliches  Mißverständnis 
  31.    ausräumen:  THYSHELL ist  k e i n  Command-Line-Interpre-
  32.    ter, der für den Atari-ST eine MS-DOS-ähnliche Oberfläche 
  33.    herstellte, sondern eine GEM-Shell, die auch den direkten 
  34.    Aufruf von Accessories erlaubt.  Sie kann und will  daher 
  35.    auch hervorragende Programme wie etwa GULAM nicht  erset-
  36.    zen.
  37.  
  38.    THYSHELL  ist vielmehr für alle diejenigen  gedacht,  die 
  39. eine  Festplatte  besitzen und eine Reihe von  Programmen  - 
  40. gleichgültig  welche - regelmäßig benutzen und diese  bequem 
  41. aufrufen möchten.  THYSHELL bietet dabei eine Reihe  nützli-
  42. cher Funktionen, die dem Programmierer ebenso wie dem reinen 
  43. Anwender zustatten kommen, die ich aber in jedem anderen PD-
  44. Programm dieser Art vermißt habe.  Deshalb habe ich THYSHELL 
  45. geschrieben. Mögen auch andere an dem Nutzen teilhaben!
  46.    Die  Qualität  einer Shell erweist sich erst  durch  ihre 
  47. Benutzung. THYSHELL hat eine ganze Reihe von Funktionen, die 
  48. es meines Wissens bisher in keiner anderen Shell dieser  Art 
  49. gibt.  Lesen Sie bitte auch den Abschnitt "Besondere  Eigen-
  50. schaften von THYSHELL", um darüber Näheres zu erfahren.
  51.  
  52.  
  53. 2. Die Menüs
  54.  
  55.    Zwei Menüs stehen ihnen in THYSHELL stets zur  Verfügung: 
  56.    Zum einen das "Desk"-Menü mit dem Copyright-Info und  den 
  57. Accessories,  die  Sie  jederzeit und  ohne  Einschränkungen 
  58. aufrufen können. Versuchen Sie, ein Programm aufzurufen oder 
  59. THYSHELL  zu  verlassen,  während ein  (Fenster-)  Accessory 
  60. aktiv ist, so erscheint eine Warnmeldung, da dies naturgemäß 
  61. in  aller  Regel zu Problemen (bis  hin  zum  Systemabsturz) 
  62. führt.  Sollten  Sie  aber einmal  gute  Gründe  haben,  das 
  63. Accessory aktiv zu lassen, so ist dies möglich.
  64.    Zum  anderen das "File"-Menü.  Hier finden Sie den  Menü-
  65. punkt  "Run *.PRG (Tab)",  über den Sie beliebige  Programme 
  66. mit  einer Fileselect-Box aufrufen  können.  Diese  Funktion 
  67. erreichen Sie auch durch Drücken der  [Tab]-Taste.  Außerdem 
  68. finden  Sie  hier  den Menüpunkt  "Quit  (Esc)"  (eigentlich 
  69. überflüssig,  oder?),  um THYSHELL zu verlassen.  Wie üblich 
  70. erfolgt zuvor eine Sicherheitabfrage. Dasselbe erreichen Sie 
  71. durch Drücken der Taste [Esc].
  72.    Alle weiteren Menüs können Sie frei definieren.  Wie dies 
  73. möglich ist, erfahren Sie im nächsten Abschnitt.
  74.  
  75.  
  76. 3. Konfiguration von THYSHELL
  77.  
  78.    Sie können die Möglichkeiten von THYSHELL erst dann  voll 
  79. nutzen,  wenn  Sie Ihre eigenen Bedürfnisse dem Programm  in 
  80. einer Textdatei namens THYSHELL.DEF mitteilen.  Diese  Datei 
  81. muß im selben Verzeichnis wie THYSHELL.PRG stehen. In dieser 
  82. Datei  können Sie festlegen,  welche Programme Sie von  THY-
  83. SHELL aus über Pulldown-Menüs und evtl.  auch über  Tastatur 
  84. aufrufen wollen.
  85.    Diese  Datei  können Sie mit jedem  Texteditor  (1ST_WORD 
  86. oder  Nachfolgeprogrammen,  aber auch  jedem  PD-Texteditor) 
  87. erstellen. THYSHELL.DEF hat folgenden Aufbau:
  88.    Die  Datei ist zeilenweise organisiert.  In  jeder  Zeile 
  89. steht  ein Menütitel oder ein Menüeintrag mit dem Namen  des 
  90. Programms, das durch Anwählen dieses Menüeintrags aufgerufen 
  91. werden soll;  außerdem kann noch ein Command-String  folgen, 
  92. der  dem  Programm bei jedem Aufruf übergeben  werden  soll. 
  93. Jeder  Zeile,  in  der ein Menütitel  steht  (außer  der/dem 
  94. ersten) muß eine Leerzeile vorangehen.
  95.    Eine Zeile, in der ein Menüeintrag steht, enthält:
  96.  
  97.    1. den Text des Menüeintrags, also z.B. " SIGNUM-Editor " 
  98.       oder " GFA-Basic-Interpreter ". Aus ästhetischen Grün-
  99.       den  ist es sinnvoll,  den Text des  Menüeintrags  mit 
  100.       einem Leerzeichen beginnen und enden zu lassen. - Wenn 
  101.       Sie  das Programm auch über Tastatur aufrufen  wollen, 
  102.       so  muß der Menüeintrag mit einem  Leerzeichen  enden. 
  103.       Direkt  davor muß dann in runden Klammern das  Zeichen 
  104.       stehen,  durch das der Aufruf erfolgen soll, also z.B. 
  105.       "(s)". Beachten Sie, daß Großbuchstaben und Kleinbuch-
  106.       staben  unterschieden werden:  "(s)" und "(S)"  werden 
  107.       unterschieden!  Hinter  der schließenden  Klammer  muß 
  108.       aber  unbedingt  ein  Leerzeichen  stehen,  damit  der 
  109.       Aufruf funktioniert.  Natürlich können Sie auch  einen 
  110.       beliebigen  Text  als Menüeintrag  angeben,  ohne  daß 
  111.       durch  dessen Anwählen ein Programm aufgerufen  werden 
  112.       soll.  Dann  entfällt,  was gleich unter (2)  und  (3) 
  113.       gesagt werden wird.
  114.  
  115.    2. Soll  durch  Anwählen des  Menüeintrags  ein  Programm 
  116.       aufgerufen werden, so muß hinter dem Text des Eintrags 
  117.       (evtl.  mit Leerzeichen) zunächst ein Komma,  dann der 
  118.       vollständige  Dateiname  mit  Laufwerksbuchstaben  und 
  119.       Pfadnamen  stehen.  Zwischen Komma und Name darf  (das 
  120.       macht man leicht falsch!) kein Leerzeichen stehen.
  121.  
  122.    3. Hinter dem Namen kann (das bleibt Ihnen überlassen)  - 
  123.       durch  genau  e i n  Leerzeichen getrennt - (nicht  0, 
  124.       nicht  2,  nicht  3  ...) ein  Text  folgen,  der  dem 
  125.       aufzurufenden Programm   b e i  j e d e m  A u f r u f 
  126.       als Command-String übergeben wird.  Vergleichen Sie zu 
  127.       Näherem  den Abschnitt über  "Besondere  Eigenschaften 
  128.       von THYSHELL".
  129.  
  130.    Groß- oder Kleinschreibung spielen bei (2) und (3)  keine 
  131. Rolle.
  132.    Das  alles hört sich komplizierter an als es  ist.  Daher 
  133. ein  paar Beispiele:  Nehmen wir an,  Sie benutzen  Signum2, 
  134. 1st_Word und 2nd_word und programmieren daneben in GFA-Basic 
  135. 2.0,  besitzen  schon den Interpreter V.  3.0 und  verwenden 
  136. auch Omikron-Basic.  In GFA-Basic 3.xx haben Sie ein hervor-
  137. ragendes  Programm geschrieben (Sie haben es  SUPER.GFA  ge-
  138. nannt),  das  Sie oft verwenden,  aber  vorläufig,  bis  zum 
  139. Erscheinen des Compilers,  mit dem Run-Only-Interpreter auf-
  140. rufen  müssen.  Dann  könnte Ihre  Datei  THYSHELL.DEF  etwa 
  141. folgendermaßen aussehen:
  142.  
  143.  Texte
  144.  Signum-Editor (s) ,E:\SIGNUM2.PRG
  145.  Signum-Druck  (S) ,E:\SPRINT.PRG
  146.  S-Zeichensatzed.  ,E:\CHSETS\DCS24N.PRG
  147. -------------------
  148.  ASCII-Editor  (1) ,C:\1ST_WORD\1ST_WORD.PRG
  149.  *.HEX ==> *.DOT   ,C:\1ST_WORD\INSTALL.PRG
  150.  *.DOT ==> *.HEX   ,C:\1ST_WORD\CFGALYSE.PRG
  151. -------------------
  152.  2nd Word      (2) ,E:\2ND_WORD\2ND_WORD.PRG
  153. -------------------
  154.  Super         (y) ,D:\GFABASIC.304\GFABASRO.PRG super
  155.  
  156.  Basic
  157.  GFA-Basic-Interpreter V. 2.02 (b) ,D:\GFABASIC.202\GFABASIC.PRG init
  158.  Run-Only-Interpreter  V. 2.02     ,D:\GFABASIC.202\GFABASRO.PRG
  159.  GFA-Basic-Compiler    V. 2.02 (B) ,D:\GFABASIC.202\GFA_BCOM.PRG
  160. ----------------------------------
  161.  GFA-Basic-Interpreter V. 3.04 (I) ,D:\GFABASIC.304\GFAB_304.PRG init
  162.  Run-Only-Interpreter  V. 3.04 (i) ,D:\GFABASIC.304\GFABASRO.PRG
  163. -----------------------------------
  164.  Omikron-Basic                 (o) ,D:\OMIKRON.300\OM-BASIC.PRG
  165.  
  166.  
  167.    Beachten Sie die Leerzeichen vor dem Komma: Absolut nötig 
  168. sind sie nur dort,  wo davor ein Zeichen in Klammern  steht, 
  169. damit  durch Drücken der entsprechenden Taste  das  Programm 
  170. nach dem Komma auch aufgerufen wird.  Auf diese Weise können 
  171. Sie   den  Signum-Texteditor  mit  "s"  (Taste  'S'    o h -
  172. n e [Shift]),  das  Druckprogramm mit "S" (Taste 'S'   m i t 
  173. [Shift])  aufrufen.  Jedes  über  die  Tastatur  erreichbare 
  174. Zeichen  kann zum Aufruf eines Programms verwendet werden  - 
  175. wie Sie an 1st- und 2nd-Word sehen,  auch etwa Ziffern.  Aus 
  176. ästhetischen  Gründen lasse ich jeden Menüeintrag  auch  mit 
  177. einem Leerzeichen beginnen; nötig ist das aber nicht. Hinter 
  178. dem Komma steht der vollständige Name des Programms  (s.o.). 
  179. Dazu brauche ich wohl nichts weiter zu sagen.
  180.    Bei  den  beiden GFA-Basic-Interpretern  folgt  nach  dem 
  181. Dateinamen  noch das Wort "init".  Dabei handelt es sich  um 
  182. die Kommandozeile, die dem Programm bei jedem Aufruf überge-
  183. ben wird.  Ähnliches gilt für Ihr Programm  SUPER.GFA:  Wenn 
  184. Sie den Menüpunkt "Super" aufrufen oder "y" drücken, so wird 
  185. der  Run-Only-Interpreter  aufgerufen und ihm  zugleich  die 
  186. Kommandozeile "SUPER" übergeben.  Er lädt daher  "SUPER.GFA" 
  187. (falls es im selben Ordner steht) und führt es aus. Wenn Sie 
  188. das Programm SUPER.GFA mit dem Befehl Quit  beenden,  können 
  189. Sie es so von THYSHELL aus wie ein gewöhnliches ausführbares 
  190. Programm benutzen.
  191.    Vielleicht  wundern  Sie sich,  daß  ich  dem  GFA-Basic-
  192. Interpreter V.  3.04 einen neuen Namen gegeben habe,  obwohl 
  193. er doch in einem anderen Ordner steht als der Interpreter V. 
  194. 2.02.  Die  Auflösung  des Rätsels steht  -  neben  weiteren 
  195. Bemerkungen zur Übergabe von Command-Strings (dort  erfahren 
  196. Sie etwa auch,  wie man einem jeden beliebigen Programm eine 
  197. Kommandozeile  übergeben  kann)  -  in  dem  Abschnitt  über 
  198. "Besondere Eigenschaften von THYSHELL".
  199.    An dieser Stelle bleibt mir nur noch zu bemerken, daß ich 
  200. nur  der Übersicht halber die Command-Strings in  Kleinbuch-
  201. staben,  den  Dateinamen aber in Großbuchstaben  geschrieben 
  202. habe.  Das Programm unterscheidet Klein- und  Großbuchstaben 
  203. im Dateinamen und im Command-String nicht.  Beachten sollten 
  204. Sie  aber,  daß  g e n a u  e i n  Leerzeichen den  Command-
  205. String vom Dateinamen trennen muß;  eventuell noch  folgende 
  206. Leerzeichen  werden sonst als Bestandteil der  Kommandozeile 
  207. interpretiert.
  208.    Eine Beispieldatei THYSHELL.DEF,  die erprobt ist und bei 
  209. mir ständig Anwendung findet, habe ich beigegeben.
  210.  
  211.  
  212. 4. Besondere Eigenschaften von THYSHELL
  213.  
  214.    In  diesem Abschnitt gehe ich auf einige  Funktionen  und 
  215. Eigenschaften  des  Programms  ein,  die  Ihnen  die  Arbeit 
  216. erheblich erleichtern können und zum größten Teil weit  über 
  217. den  Standard  derartiger  Shell-Programme  hinausgehen.  An 
  218. einigen  Stellen  gehe  ich auch auf das  eine  oder  andere 
  219. programmtechnische Detail ein.  Werden Sie daher nicht  mut-
  220. los, wenn Sie - falls Sie nicht selbst programmieren - nicht 
  221. alles verstehen: Ich habe mich jedenfalls bemüht, alles, was 
  222. zur  vollen Nutzung von THYSHELL nötig ist,  so einfach  wie 
  223. möglich darzustellen.
  224.  
  225.  
  226.    a) Speicherplatz
  227.  
  228.       Das  Programm reserviert sich für eigene Zwecke  10000 
  229.    Bytes Speicherplatz,  die zur Speicherung der  Konfigura-
  230.    tion und zur Aufrechterhaltung der Verwaltung nötig sind. 
  231.    Dieser  Speicherplatz  sollte  in  aller  Regel  genügen. 
  232.    Definieren  Sie aber sehr umfangreiche Menüs  mit  vielen 
  233.    Einträgen, so kann es schon einmal zu Problemen kommen.
  234.       In  diesem  Falle  haben  Sie  die  Möglichkeit,  mehr 
  235.    Speicher für THYSHELL anzufordern.  Dies können Sie  tun, 
  236.    indem Sie  a l s  e r s t e  Z e i l e  in die Konfigura-
  237.    tionsdatei  THYSHELL.DEF eine mit dem Zeichen "#"  begin-
  238.    nende (dezimale) Zahl einfügen, die größer als 10000 sein 
  239.    sollte (andernfalls bleibt es bei 10000 Bytes).  So führt 
  240.    die  Zeile:  "#30000" dazu,  daß sich das Programm  30000 
  241.    Bytes  für die Verwaltung reserviert.  Die Zahl  "#30000" 
  242.    (oder was immer Sie wünschen) muß (natürlich ohne  Anfüh-
  243.    rungszeichen,  aber  mit '#') am Anfang der ersten  Zeile 
  244.    stehen.  Alles,  was hinter der Zahl folgt und sich nicht 
  245.    als Zahl interpretieren läßt,  wird ignoriert. - Beachten 
  246.    Sie jedoch,  daß es nicht möglich ist,  den von  THYSHELL 
  247.    verbrauchten Speicher zu verringern:  Geben Sie eine Zahl 
  248.    an,  die  kleiner als 10000 ist,  so reserviert sich  das 
  249.    Programm dennoch 10000 Bytes.
  250.  
  251.  
  252.    b) Kommandozeilen
  253.  
  254.       Command-Strings  (Kommandozeilen) sind  Befehlszeilen, 
  255.    die  einem  Programm bei dessen Aufruf  übergeben  werden 
  256.    können.  Dadurch ist es möglich,  die Arbeitsweise  eines 
  257.    Anwenderprogramms  zu beeinflussen  -  selbstverständlich 
  258.    nur  dann,  wenn  das Programm  den  Command-String  auch 
  259.    ausliest und berücksichtigt.  Sicher wissen Sie,  daß man 
  260.    für  ein Programm eine "Anwendung anmelden" kann  -  dies 
  261.    geschieht über den gleichnamigen Menüpunkt im Desktop. So 
  262.    kann  man  etwa  erreichen,  daß  durch  Anklicken  einer 
  263.    "*.SDO"-Datei SIGNUM2.PRG gestartet und die entsprechende 
  264.    Datei  geladen wird - vorausgesetzt,  die Datei  und  das 
  265.    Programm  stehen im selben Verzeichnis oder das  Programm 
  266.    im  Hauptverzeichnis.  Klickt  man vom Desktop  aus  eine 
  267.    Datei  an,  für  die eine Anwendung  angemeldet  ist,  so 
  268.    übernimmt  das Betriebssystem freundlicherweise die  Auf-
  269.    gabe, einen entsprechenden Command-String an das Programm 
  270.    zu  übergeben.  Beim Aufruf aus einer Shell wie  THYSHELL 
  271.    muß dies natürlich das Shell-Programm tun.
  272.  
  273. ==>   Es folgen einige programmtechnische Erörterungen,  die 
  274.       Sie  auch  überlesen können;  lesen Sie dann  bei  *** 
  275.       weiter!
  276.  
  277.       Das  Desktop-Programm übergibt die  Kommandozeile  auf 
  278.    zwei  völlig verschiedene Weisen:  Zum einen schreibt  es 
  279.    ihn mit der AES-Funktion SHEL_WRITE in einen Puffer,  aus 
  280.    dem ihn das aufgerufene Programm mittels SHEL_READ wieder 
  281.    auslesen kann;  zum anderen schreibt es ihn in die zweite 
  282.    Hälfte der Basepage des aufgerufenen Programmes,  von  wo 
  283.    man  ihn ebenfalls relativ einfach wieder  auslesen  kann 
  284.    (in GFA-Basic unter Verwendung der Systemvariablen  BASE-
  285.    PAGE).  In beiden Fällen sollte die Kommandozeile - allen 
  286.    Programmierern  sei's ans Herz gelegt - folgenden  Aufbau 
  287.    haben: Anzahl der folgenden Bytes als ASCII-Code, Komman-
  288.    dozeile, Nullbyte; in GFA-Basic also:
  289.  
  290.    command_string$=CHR$(LEN(cmd$))+cmd$+CHR$(0)
  291.  
  292.    wenn cmd$ die Information ist,  die man dem  aufgerufenen 
  293.    Programm    übermitteln   will   (etwa   der    Dateiname 
  294.    "BRIEF.SDO").
  295.       An  dieses  Format sollte man sich  unbedingt  halten, 
  296.    wenn man mit solchen Aufrufen arbeitet.  Zumeist wird die 
  297.    Kommandozeile  von  Anwenderprogrammen aus  der  Basepage 
  298.    ausgelesen.  Es  ist daher nicht verwunderlich,  daß  die 
  299.    meisten  Shells - soweit sie überhaupt die  Übergabe  von 
  300.    Command-Strings erlauben - diese ausschließlich über  die 
  301.    GEMDOS-Funktion p_exec übergeben, die ja ohnehin aufgeru-
  302.    fen werden muß,  wenn man ein Programm  ausführt.  Leider 
  303.    gibt es bemerkenswerte Ausnahmen, etwa SIGNUM. Nachdem es 
  304.    in  SIGNUM1  gar keine Möglichkeit gab,  den  Editor  per 
  305.    "Anwendung anmelden" zum Laden des gewünschten  Dokuments 
  306.    zu  überreden,  ist  dies  jetzt  in  SIGNUM2  problemlos 
  307.    möglich.   Dabei  handelt  es  sich  aber  wohl  um   ein 
  308.    "Abfallprodukt" des gegenseitigen Aufrufs von Editor  und 
  309.    Druckprogramm  mittels SHEL_WRITE (weshalb auch beide  im 
  310.    selben  Verzeichnis stehen müssen).  Deshalb wird in  SI-
  311.    GNUM2 der Command-String auch mittels SHEL_READ  ausgele-
  312.    sen, eine Übergabe durch p_exec führt nicht zum Erfolg.
  313.       THYSHELL übergibt alle Kommandozeilen,  die  übergeben 
  314.    werden können, sowohl mittels SHEL_WRITE als auch mittels 
  315.    p_exec, wie es auch das Desktop tut.
  316.  
  317. ***   Da  THYSHELL sich bei der Übergabe von  Kommandozeilen 
  318.    genauso  verhält  wie das Desktop,  werden  aus  THYSHELL 
  319.    übergebene  Kommandozeilen  auch  von  allen   Programmen 
  320.    erkannt  und  berücksichtigt,  die  sich  mit  "Anwendung 
  321.    anmelden" starten lassen. Aus THYSHELL aber lassen sich - 
  322.    im Gegensatz zum Desktop,  nicht nur einfache  Dateinamen 
  323.    ohne   Pfadangabe,   sondern  beliebige   Command-Strings 
  324.    übergeben.   So   ist   es   problemlos   möglich,   etwa 
  325.    SIGNUM2.PRG,  gleichgültig wo es steht,  mit einer  Zeile 
  326.    wie:
  327.  
  328.    e:\diss\txt_übsg\stas1txt.sdo
  329.  
  330.    aufzurufen.  Vorsicht aber bei Umlauten in Dateinamen: Da 
  331.    sie  als Sonderzeichen gelten,  ist es im Unterschied  zu 
  332.    sonst  nicht  gleichgültig,  ob Sie als  Groß-  oder  als 
  333.    Kleinbuchstaben dastehen.
  334.  
  335. ==> Solange  Sie  nicht  in  GFA-Basic  3.xx  programmieren, 
  336.    können  Sie  den folgenden Abschnitt  überlesen  und  bei 
  337.    "***" weiterlesen.
  338.  
  339.       Leider  ist es beim GFA-Basic-Interpreter  V.  3.04  D 
  340.    (dies  ist die Version,  die ich besitze) nicht  möglich, 
  341.    ein  *.GFA-File  durch "Anwendung anmelden"  zu  starten. 
  342.    Zwar wird der Editor/Interpreter gestartet,  findet  aber 
  343.    anschließend  die Datei nicht,  durch die  er  aufgerufen 
  344.    wurde.  Dies  gilt möglicherweise auch für alle  früheren 
  345.    Interpreter-Version ab 3.00.  Meine Anfrage bei GFA-Basic 
  346.    ergab,  daß dieses Problem ab dem nächsten Update  besei-
  347.    tigt  sein  wird.  Das Problem beruht  offenbar  auf  dem 
  348.    Fehler,  daß das führende Byte des  Command-Strings,  das 
  349.    die Anzahl der folgenden Bytes enthalten sollte,  fälsch-
  350.    lich  als  erstes  Byte  der  eigentlichen  Kommandozeile 
  351.    interpretiert wird, was zu der Fehlermeldung "Datei nicht 
  352.    gefunden" führt. In THYSHELL wird dieser Fehler umgangen, 
  353.    indem  der Command-String entsprechend  abgeändert  wird, 
  354.    wenn eine entsprechende Version des Interpreters aufgeru-
  355.    fen  wird.  Damit  THYSHELL weiß,  daß es sich  um  einen 
  356.    solchen,  fehlerhaft arbeitenden Interpreter handelt, muß 
  357.    dieser  den Dateinamen "GFAB_304.PRG"  tragen.  Wird  ein 
  358.    Programm  dieses Namens von THYSHELL aus  aufgerufen,  so 
  359.    wird die eventuell übergebene Kommandozeile  entsprechend 
  360.    angepaßt.  - Der zugehörige Run-Only-Interpreter arbeitet 
  361.    übrigens korrekt und braucht nicht umbenannt zu werden.
  362.       Sicher ist die Übergabe von Command-Strings beim  Run-
  363.    Only-Interpreter auch interessanter.  Ich habe oben  ("3. 
  364.    Konfiguration von THYSHELL") angedeutet,  wie man so  ein 
  365.    GFA-Basic-Programm von THYSHELL aus nutzen kann, als wäre 
  366.    es  ein eigenständiges ausführbares  Programm  (Run-Only-
  367.    Interpreter mit dem entsprechenden Dateinamen als Komman-
  368.    dozeile aufrufen,  aber einen eigenen Menüeintrag  vorse-
  369.    hen).  Aber  auch  bei den Editor/Interpretern  ist  dies 
  370.    sinnvoll,  wenn man bei Arbeitsbeginn Voreinstellungen im 
  371.    Interpreter vornehmen möchte,  die man nicht patchen kann 
  372.    oder möchte. Dazu kann man ein Programm schreiben, dessen 
  373.    Namen man beim Aufruf des Interpreters als  Kommandozeile 
  374.    übergibt  und das sich am Schluß mit NEW  selbst  löscht. 
  375.    Für  den  Interpreter V.  2.02 habe  ich  z.B.  folgendes 
  376.    Programm geschrieben, das ich bei jedem Aufruf abarbeiten 
  377.    lasse:
  378.  
  379.       CHDIR "\GFABASIC.202\PROGRAMS.ALG"
  380.       DEFLIST 0
  381.       NEW
  382.  
  383.    Für  V.  3.04  D  dagegen  hatte  ich  anfangs  folgendes 
  384.    Programm verfaßt,  mit dem die Variablentypen auf Integer 
  385.    festgelegt,  einige Funktionstasten definiert und DEFLIST 
  386.    2 eingestellt wird:
  387.  
  388.       CHDIR "\GFABASIC.304\PROGRAMS"
  389.       DEFINT "a-z"
  390.       KEYDEF 1,CHR$(27)+"RUN "
  391.       KEYDEF 11,CHR$(27)+"SAVE "
  392.       KEYDEF 2,"~INP(2)"
  393.       KEYDEF 3,"CLS"+CHR$(13)
  394.       NEW
  395.  
  396.       Zwar  kann  man die Voreinstellung  für  DEFLIST  auch 
  397.    patchen,  doch ist das nicht jedermanns  Sache.  Außerdem 
  398.    ist  in  der Dokumentation,  die zur Version 3.04  D  des 
  399.    Interpreters auf Diskette mitgeliefert wurde,  das Datei-
  400.    Offset  für diesen Patch falsch  angegeben.  Statt  "SEEK 
  401.    #1,80"  muß  es  - diese Information habe  ich  von  GFA-
  402.    Systemtechnik und habe sie schon erfolgreich angewandt  - 
  403.    "SEEK  #1,96"  heißen  - wohlgemerkt für  den  Patch  der 
  404.    Voreinstellung  von  DEFLIST  und  die  Version  3.04  D. 
  405.    Selbstverständlich  kann ich keinerlei Haftung für  diese 
  406.    Information  übernehmen  - experimentieren  Sie  nur  mit 
  407.    Sicherheitskopien!     Durch  beide *.GFA-Programme  wird 
  408.    auch automatisch ein Ordner zum aktuellen gemacht, in dem 
  409.    gerade  entwickelte Programme liegen (dies ist  hilfreich 
  410.    z.B.  beim Nachladen von Dateien - *.RSC u.ä. - durch die 
  411.    Programme).
  412.  
  413. *** Die  Übergabe von Kommandozeilen ist beim  Aufruf  eines 
  414.    Programms von THYSHELL aus in folgender Weise möglich:
  415.  
  416.    - bei Aufruf über das Menü oder über die Tastatur,  indem 
  417.    in der Konfigurationsdatei THYSHELL.DEF hinter dem Datei-
  418.    namen, durch genau ein Leerzeichen getrennt, ein Command-
  419.    String vermerkt  wird; dieser wird dann  b e i  j e d e m 
  420.    A u f r u f  des betreffenden Programms  übergeben,  wenn 
  421.    nicht ein anderer Command-String explizit angegeben wird. 
  422.    Vgl. oben unter "3. Konfiguration von THYSHELL".
  423.  
  424.    - durch explizite Angabe einer Kommandozeile, die überge-
  425.    ben  werden soll.  Dies ist bei jedem Aufruf  eines  Pro-
  426.    gramms  möglich,  sei es über Tastatur,  sei es über  das 
  427.    Menü,  sei  es  über  "Run  *.PRG".  Hierbei  müssen  Sie 
  428.    unterscheiden,  ob es sich um ein "*.PRG"- bzw.  "*.TOS"- 
  429.    bzw.  "*.APP"-File oder aber um ein "*.TTP"-File handelt. 
  430.    Bei "*.TOS"-,  "*.APP" und "*.PRG"-Files wird  gewöhnlich 
  431.    keine Kommandozeile abgefragt.  Drückt man jedoch während 
  432.    des  Aufrufs  die  rechte Maustaste,  so  wird  man  dazu 
  433.    aufgefordert,  eine Kommandozeile (von max.  128  Zeichen 
  434.    Länge)  einzugeben.   Umgekehrt  wird  bei  "*.TTP"-Files 
  435.    gewöhnlich ein Command-String abgefragt.  Drückt man beim 
  436.    Aufruf  die  rechte  Maustaste,   so  unterbleibt   diese 
  437.    Abfrage.
  438.       A n m e r k u n g :  Beim Aufruf über das Menü ist  es 
  439.       problemlos  möglich,  zusätzlich zur linken  auch  die 
  440.       rechte  Maustaste  zu drücken.  Beim Aufruf  über  die 
  441.       Fileselect-Box ("Run *.PRG") muß man auf den gewohnten 
  442.       Doppelklick verzichten und zunächst das Programm  (mit 
  443.       einfachem Klick) anwählen,  dann die rechte  Maustaste 
  444.       festhalten  und schließlich mit  [Return]  bestätigen. 
  445.       Diese etwas umständliche Verfahrensweise ist sicher zu 
  446.       vertreten   -  wenn  Sie  ein  Programm   häufig   mit 
  447.       Kommandozeile aufrufen,  werden Sie es ohnehin in  die 
  448.       Konfiguration aufnehmen.
  449.  
  450.    -  Bei der automatischen Ausführung eines Programms  beim 
  451.    Start von THYSHELL.PRG - s.u. 4 e)
  452.  
  453.  
  454.    c) Signum
  455.  
  456.       Daß ich SIGNUM2-Anwender bin, werden Sie schon gemerkt 
  457.    haben.  Wie  in  dem vorigen Abschnitt  bereits  erwähnt, 
  458.    können sich der Editor und das Druckprogramm von  SIGNUM2 
  459.    (mittels SHEL_WRITE) gegenseitig aufrufen; dabei wird die 
  460.    zuletzt  bearbeitete  Datei automatisch  wieder  geladen. 
  461.    Dies  funktioniert  auch  bei Shells (man  muß  zwar  das 
  462.    jeweilige Programm neu aufrufen,  doch das Dokument  wird 
  463.    automatisch  geladen) doch gibt es ein  Problem:  Verläßt 
  464.    man SIGNUM mit "beenden" oder "abbrechen",  so ignorieren 
  465.    dies die meisten Shells,  beim nächsten Aufruf von SIGNUM 
  466.    wird  die  Datei dennoch wieder  geladen.  Nicht  so  bei 
  467.    THYSHELL,  das sich hier wieder wie das Desktop  verhält. 
  468.    Übrigens  ist  es bei Verwendung einer  Shell  auch  ohne 
  469.    weiteres  möglich,  SIGNUM2  mit  "->  Druckprogramm"  zu 
  470.    verlassen, ein anderes Programm oder ein Accessory aufzu-
  471.    rufen und wieder in SIGNUM2 zurückzukehren:  Das  zuletzt 
  472.    bearbeitete Dokument wird automatisch wieder geladen, bis 
  473.    Sie   Editor  oder  Druckprogramm  mit   "beenden"   oder 
  474.    "abbrechen" verlassen.  Voraussetzung ist natürlich,  daß 
  475.    nicht  ein anderes Programm zwischendurch mit  SHEL_WRITE 
  476.    arbeitet.  Aber das tun die wenigsten, und im schlimmsten 
  477.    Falle müssen Sie ihr Dokument eben wieder von Hand laden.
  478.  
  479.  
  480.    d) SHIP.PRG
  481.  
  482.       Daß  THYSHELL sich wie das Desktop verhält,  hat  auch 
  483.    einen  Nachteil:  Wenn Sie ein Programm zum Parken  Ihrer 
  484.    Festplatte   aufrufen,   so  kann  es   (bei   vorheriger 
  485.    Verwendung von SHEL_WRITE,  z.B.  mit SIGNUM2) sein,  daß 
  486.    nach der Rückkehr von Ihrem Parkprogramm das  Verzeichnis 
  487.    einer  Festplattenpartition  gelesen  wird.  Dies  umgeht 
  488.    THYSHELL  dadurch,  daß nach Ausführung  eines  Programms 
  489.    namens SHIP.PRG stets eine Alert-Box erscheint,  die  Sie 
  490.    zum Ausschalten der Geräte auffordert.  Möchten Sie  dies 
  491.    nicht,   so  können  Sie  mit  "NEIN"  protestieren:  Die 
  492.    daraufhin erscheinende Fehlermeldung "Daten auf  Laufwerk 
  493.    ...  defekt  ..."  muß  Sie  nicht  beunruhigen:  Es  ist 
  494.    dieselbe,  die auch erscheint,  wenn Sie das SHIP.PRG von 
  495.    Atari  vom  Desktop aus  von  einer  Festplattenpartition 
  496.    gestartet  haben.  Hat  Ihr  Parkprogramm  einen  anderen 
  497.    Namen,  so benennen Sie es am besten in SHIP.PRG  um.  So 
  498.    können  Sie  es  aus  THYSHELL  bequem  von  der   Platte 
  499.    aufrufen.
  500.  
  501.  
  502.    e) automatischer Start von Programmen
  503.  
  504.       Es   gibt   noch   eine   weitere   Möglichkeit,   die 
  505.    Konfigurationsdatei THYSHELL.DEF zu erweitern. Hinter der 
  506.    letzten  Zeile  mit Menüeinträgen können sie  eine  Zeile 
  507.    "*****" (fünf Asterisken ohne weitere Zeichen, auch keine 
  508.    Leerzeichen!) anfügen.
  509.       In  allen  Zeilen,   die  danach  folgen,   wird   ein 
  510.    vollständiger  Dateiname  (mit  Laufwerksbuchstaben   und 
  511.    Pfad)   und  eventuell  (optional),   durch   genau   ein 
  512.    Leerzeichen getrennt, wieder eine Kommandozeile erwartet. 
  513.    Die  dort  angegebenen Programme werden  beim  Start  von 
  514.    THYSHELL.PRG automatisch in der Reihenfolge gestartet, in 
  515.    der  sie  in der Datei  THYSHELL.DEF  stehen.  Dies  kann 
  516.    jedoch   unterbunden  werden,   indem  beim   Start   von 
  517.    THYSHELL.PRG    die    [Control]-Taste    gedrückt    und 
  518.    festgehalten  wird,  bis die Menüleiste von  THYSHELL  zu 
  519.    sehen ist.
  520.       Sinn  dieser Einrichtung ist es,  die  Verwendung  des 
  521.    GFA-Starters zu ermöglichen. Dieser löscht nämlich offen-
  522.    bar Herrn Patzels unverzichtbare Fileselect-Box bei jedem 
  523.    Aufruf eines GEM-Programms (werden da Zeiger verändert?). 
  524.    So haben Sie nun die Möglichkeit, THYSHELL.PRG von diesem 
  525.    (oder  auch einem anderen) Autostart-Programm starten  zu 
  526.    lassen und danach erst Patzels Fileselect-Box zu  instal-
  527.    lieren,  indem Sie sie von THYSHELL automatisch ausführen 
  528.    lassen.  Hier kann es eben auch einmal sinnvoll sein, den 
  529.    automatischen Aufruf zu unterbinden,  etwa wenn Sie  THY-
  530.    SHELL  verlassen und dann wieder starten  (warum  eigent-
  531.    lich?).  Sonst  wird immer neuer Speicher  für  residente 
  532.    Programme  verwendet,  die eigentlich  schon  installiert 
  533.    sind.
  534.       Denken  Sie  daran,  daß der automatische  Aufruf  von 
  535.    Programmen  beim Start von THYSHELL durch   D r ü c k e n   
  536.    d e r   [ C o n t r o l ] - T a s t e  verhindert  werden 
  537.    kann.
  538.  
  539.  
  540.    f) Aufruf von Programmen von Diskette
  541.  
  542.       Sicherlich ist eine Shell wie THYSHELL in erster Linie 
  543.    etwas für Festplattenbesitzer.  Aber welcher Festplatten-
  544.    besitzer  hat sich noch nicht über ein Problem  geärgert, 
  545.    das bei den meisten Shells regelmäßig auftritt,  wenn man 
  546.    ein Programm von Diskette aufrufen will,  aber gerade die 
  547.    falsche  Diskette eingelegt hat.  Da  das  Betriebssystem 
  548.    (genauer  das GEMDOS) intern ein Verzeichnis des  Inhalts 
  549.    der Laufwerke A:  und B:  verwaltet,  dieses  Verzeichnis 
  550.    aber  nicht  ständig aktualisiert wird,  führt  auch  das 
  551.    Einlegen der richtigen Diskette nicht zum Erfolg,  da das 
  552.    GEMDOS noch das alte Verzeichnis für gültig hält und  gar 
  553.    nicht erst versucht, auf Diskette zuzugreifen.
  554.       Dieses  Problem  kann man in den  meisten  Shells  nur 
  555.    umgehen,  indem  man eine Fileselect-Box  aufruft  (falls 
  556.    irgenwo eine zur Verfügung steht; es gibt nämlich Shells, 
  557.    die  es nicht einmal erlauben,  ein  beliebiges  Programm 
  558.    aufzurufen!)  und  dann "zu Fuß" das Verzeichnis  für  A: 
  559.    oder B: aktualisiert.
  560.       In  THYSHELL kann dieses Problem nicht  auftreten,  da 
  561.    bei  jedem  Zugriff auf  A:  oder  B:  das  entsprechende 
  562.    Verzeichnis  aktualisiert wird  [GFA-Basic-Programmierern 
  563.    sei verraten: mit "VOID DFREE(dr%)"]. Die dafür erforder-
  564.    liche Zeit fällt bei Diskettenzugriffen nicht ins Gewicht 
  565.    (bei  Festplattenzugriffen wird die unnötige  Aktualisie-
  566.    rung  natürlich  nicht durchgeführt) und  ist  jedenfalls 
  567.    weit  weniger nervtötend als das andauernde Aufrufen  von 
  568.    "Run  *.PRG",  wenn 'mal wieder die falsche  Diskette  im 
  569.    Laufwerk war.
  570.  
  571.  
  572. 5. Schluß
  573.  
  574.    Ich  hoffe,  daß  Ihnen  THYSHELL  von  Nutzen  ist.  Ich 
  575. verwende  das Programm ständig,  so daß  ich  zuversichtlich 
  576. bin,  daß es keine groben Fehler mehr enthält.  Ich bin froh 
  577. über jede Zuschrift,  besonders aber über solche,  die  mich 
  578. auf  noch  nicht erkannte Fehler aufmerksam machen  oder  zu 
  579. weiteren  Verbesserungen anregen.  Bei Problemen  helfe  ich 
  580. gerne  - bitte schreiben Sie mir,  wenn Sie  Schwierigkeiten 
  581. haben.
  582.    Der  (vorläufig  noch nicht dokumentierte)  Quelltext  in 
  583. GFA-Basic  V.  2.02  ist gegen Einsendung von DM  10,--  und 
  584. einer  formatierten  Diskette oder gegen Einsendung  von  DM 
  585. 20,-- bei mir erhältlich.
  586.  
  587.  
  588.                               Rainer Thiel   
  589.  
  590.